package com.framework.system.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.framework.system.entity.dto.SysDeptAddDTO;
import com.framework.system.entity.dto.SysDeptQueryDTO;
import com.framework.system.entity.dto.SysDeptUpdateDTO;
import com.framework.system.entity.vo.SysDeptListVO;
import com.framework.system.entity.vo.SysDeptVO;

import java.util.List;

/**
 * <p>
 * 部门表 服务类
 * </p>
 *
 * @author Kevin
 * @since 2021-06-10
 */
public interface ISysDeptService {

    /**
     * 分页查询部门列表
     *
     * @param reqPage
     * @param req
     * @return
     */
    Page<SysDeptListVO> selectSysDeptWithPage(Page reqPage, SysDeptQueryDTO req);

    /**
     * 新增部门
     *
     * @param req
     */
    void addSysDept(SysDeptAddDTO req);

    /**
     * 修改部门
     *
     * @param req
     */
    void updateSysDept(SysDeptUpdateDTO req);

    /**
     * 删除部门
     *
     * @param ids
     */
    void removeSysDept(String ids);

    /**
     * 查看部门
     *
     * @param id
     * @return
     */
    SysDeptVO getSysDept(String id);

    /**
     * 查询部门树
     *
     * @return
     */
    List<Tree<String>> selectSysDeptWithTree();

    /**
     * 查询部门下拉树列表排除当前节点以及子节点
     *
     * @param nodeId
     * @return
     */
    List<Tree<String>> selectSysDeptAndExcludeNodeWithOptionTree(String nodeId);

    /**
     * 查询部门下拉树
     *
     * @return
     */
    List<Tree<String>> selectSysDeptWithOptionTree();

}
